#-*- codeing = utf-8 -*-
#@Time : 2020/11/26 13:20
#@Author : 阳某
#@File : 07.虚拟解释器环境venv.py
#@Software : PyCharm

'''
什么是虚拟解释器环境
随着我们用python开发的程序越来越多，需要的第三方库也会越来越多，这些第三方库都安装在site-packages目录下面。如下所示

image

大家可以发现，这个目录太臃肿了。

更大的问题是：我们可能会开发两个软件项目，对同一个库， 需要不同版本的。

比如 一个新项目需要使用 Django3.0 版本（依赖里面的异步特性）， 而同时还要维护一个老项目使用的是 Django2.0 ，不能随便升级，否则可能带来潜在的bug。


Python 的 虚拟解释器环境技术 venv ，就可以很好的解决这个问题。

它可以让我们创建 多套彼此分隔的 虚拟解释器环境 ，每个虚拟解释器环境可以安装各自需要的第三方库，互不干扰。

为什么叫 虚拟 呢？

因为它并不是完全的拷贝了整个原来你安装的 系统解释器环境 ，而是从原来的系统解释器创建了 分身 。

虚拟环境还是会大量依赖系统解释器环境里面的东西，所以是 轻量级的

创建 虚拟环境
可以执行下面的命令，创建一个虚拟的解释器环境

python -m venv e:/my/venv1
注意上面例子里面的 e:/my/venv1 就是虚拟解释器环境所在的目录。你可以改名为你喜欢的名字。

执行完命令后，就会创建 这样的 一个目录。 里面包含了如下内容

image

scripts目录里面的包含了

Python解释器程序 ： python.exe
包管理器程序： pip.exe
激活虚拟环境的命令： activate.bat， deactivate.bat
激活为缺省解释器环境
如果你希望后续一段时间的工作，缺省都是使用这个虚拟解释器环境，就可以执行命令 activate.bat 。

这个命令会把虚拟解释器环境的目录 插入 到 环境变量 Path 包含路径 的 开头位置。

这样当你执行python或者pip命令时，优先找到的就是这个虚拟环境里面的 python.exe 和 pip.exe 了。

比如直接执行 pip install selenium, 就会安装selenium到这个虚拟环境

使用系统环境安装的第三方库
上面的命令创建的虚拟环境，缺省可以使用系统解释器环境 标准库 ，比如 sqlite、tkinter、re 等等

>>> import sqlite3
>>> import tkinter
>>> import re
>>>
都不会有问题。

但是， 不能使用 第三方库 。

比如你已经用 pip install 安装好的 django、requests、selenium这些，通常在 site-packages 目录中

如果要让虚拟环境 可以直接使用 系统解释器环境 里面 site-packages目录中的库：

可以在创建虚拟环境的时候，加上 --system-site-packages 参数

也可以修改虚拟环境目录中的 pyvenv.cfg 文件

设置 include-system-site-packages 值为 true

'''